## Example of Lidl-Niedereiter

from PyM import *

[F,b] = extension(Zn(2),[1,1,0,1,1,0,1],'b') # b is primitive


L = index_table(b)
def L_(z): return lookup(z,L)

s = (b**6+b**25+b**44) * (1+b**35)**(-1) + b**28

l = L_(s)

show(s)

show(l)

show(b**l)

## Jacobi or Zech logarithms for F

q = cardinal(F)

Z = [(j,L_(1+b**j)) for j in range(q-1)]
def Z_(j): return lookup(j,Z)

show(Z_(4),Z_(19),Z_(35),Z_(50))

